package cl.tinet.ejemplos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

public class UsuarioDAOImpl implements UsuarioDAO {

	@PersistenceContext
	private EntityManager em;
	
	public UsuarioDAOImpl(EntityManager em) {
		this.em = em;
	}
	
	public List<Usuario> listar() {
		
		Query query = em.createQuery("Select u from Usuario u");
		List<Usuario> usuarios = query.getResultList();

		return usuarios;
	}

	public Usuario buscar(Usuario usuario) {	
		Query query = em.createQuery("SELECT U FROM Usuario U WHERE nombre_user=:nombre_user");
		query.setParameter("nombre_user", usuario.getUsuario());
		Usuario encontrado = (Usuario) query.getSingleResult();
		return encontrado;
	}

	public void agregar(Usuario usuario) {

		em.persist(usuario);
		
	}

	public void eliminar(Usuario usuario) {
		Usuario local = buscar(usuario);
		
		if ( local != null) {
			em.remove(local);
			System.out.println("Usuario eliminado.");
		}
		else {
			System.out.println("Usuario NO encontrado, imposible eliminar.");
		}
	}

	public void actualizar(Usuario usuario) {
		Usuario local = buscar(usuario);
		
		if ( local != null) {
			em.merge(local);
			System.out.println("Usuario modificado.");
		}
		else {
			System.out.println("Usuario NO encontrado, imposible modificar.");
		}
		
	}

}
